package br.infnet.blocoarquiteturajava.dto;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import br.infnet.blocoarquiteturajava.dominio.Cliente;
import br.infnet.blocoarquiteturajava.dominio.Conta;

public class ClienteDTO {

	private String cpfCnpj;
	private String nome;
	private Date dataNascimento;
	private String telefone;
	private String celular;
	private String email;

	private List<ContaDTO> produtos;

	public String getCpfCnpj() {
		return cpfCnpj;
	}

	public void setCpfCnpj(String cpfCnpj) {
		this.cpfCnpj = cpfCnpj;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public String getCelular() {
		return celular;
	}

	public void setCelular(String celular) {
		this.celular = celular;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public List<ContaDTO> getProdutos() {
		return produtos;
	}

	public void setProdutos(List<ContaDTO> produtos) {
		this.produtos = produtos;
	}

	/**
	 * Adiciona uma conta ao clienteDTO
	 * @param conta
	 */
	public void addProduto(ContaDTO conta) {
		if (produtos == null)
			produtos = new ArrayList<>();
			
		produtos.add(conta);
	}

	/**
	 * Converte a entidade cliente para um dto
	 * 
	 * @param cliente
	 * @return
	 */
	public ClienteDTO convertTo(Cliente cliente) {

		this.cpfCnpj = cliente.getCpfCnpj();
		this.celular = cliente.getCelular();
		this.email = cliente.getEmail();
		this.dataNascimento = cliente.getDataNascimento();
		this.nome = cliente.getNome();
		this.dataNascimento = cliente.getDataNascimento();
		this.telefone = cliente.getTelefone();

		if (cliente.getContas() != null) {
			for (Conta conta : cliente.getContas()) {
				addProduto(new ContaDTO().convertTo(conta));
			}
		}
		return this;

	}

}
